package com.haoze.nurseapp.dao;

import com.haoze.common.mapper.MyMapper;
import com.haoze.nurseapp.model.HspBasicValueEntity;
import com.haoze.repository.dto.BasicDataNameDTO;
import com.haoze.repository.service.params.SelectDictParam;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 字典内容dao
 * @author zj
 * @date 2019年2月14日09:32:15
 */
public interface HspBasicValueMapper extends MyMapper<HspBasicValueEntity> {
    int getCount(String name);

    List<String> getUnit();

    void deleteDictValue(String id);

    List<String> getMedical(String id);

    Map<String,Object> listDetail(String id);

    void insertMedical(Map<String, Object> example);

    void updateMedical(Map<String, Object> example);



    String getType(String id);



    int getCountNew(String id);







    int insertBatch(@Param("list") List<HspBasicValueEntity> list);

    /**
     * 查询此字典关联的特殊数据元
     * @param basicdataId
     * @return
     */
    int querySpecialElementCnt(@Param("basicdataId") String basicdataId);

    /**
     * 停用和此字典值关联的目录和模板
     * @param basicdatavalueId
     */
    void stopRelatedCatalog(@Param("basicdatavalueId") String basicdatavalueId);



    /**
     * 根据id获取字典值
     * @param sourceBasicIds
     * @return
     */
    List<HspBasicValueEntity> getDataValueList(@Param("sourceBasicIds") List<String> sourceBasicIds);



    /**
     * 替换医疗术语的数据元信息
     * @param medicalIds
     * @param elementId
     * @param datacode
     * @param dataValue
     */
    void batchUpdateMedical(@Param("medicalIds") List<String> medicalIds, @Param("elementId") String elementId, @Param("datacode") String datacode, @Param("dataValue") String dataValue);

    /**
     * 替换模板明细的数据元信息
     * @param tlpDetailIds
     * @param elementId
     * @param datacode
     * @param dataValue
     */
    void batchUpdateTplDetail(@Param("tlpDetailIds") List<String> tlpDetailIds, @Param("elementId") String elementId, @Param("datacode") String datacode, @Param("dataValue") String dataValue);


    /**
     * 重复字典值名称校验
     * @param basicDataId
     * @param queryString
     * @return
     */
    List<HspBasicValueEntity> findHashDictValue(@Param("basicDataId") String basicDataId, @Param("queryString") String queryString);




    /**
     * 更新模板明细字典值
     * @param dataValueId
     */
    void updateTplDetailDataValue(@Param("dataValueId") String dataValueId, @Param("tplDetailId") String tplDetailId);

    /**
     * 更新医疗术语字典值
     * @param dataValueId
     */
    void updateMedicalDataValue(@Param("dataValueId") String dataValueId, @Param("medicalId") String medicalId);
    /**
     * 根据字典id查询字典值
     * @param basicDataId
     * @param queryString
     * @return
     */
    List<HspBasicValueEntity> findByString(@Param("basicDataId") String basicDataId, @Param("queryString") String queryString);


    /**
     * 重复字典值校验
     * @param basicDataId
     * @param queryString
     * @return
     */
    List<HspBasicValueEntity> findHashValue(@Param("basicDataId") String basicDataId, @Param("queryString") String queryString);

    /**
     * 通过字典id查询字典值
     * @param datacode
     * @return
     */
    String findValueByCode(@Param("datacode") String datacode);



    /**
     * 根据dataCode查询dataValue
     * @param datacode
     * @return
     */
    String findElementValueByCode(@Param("datacode") String datacode);

    /**
     * 查询父级术语id集合
     * @param ids
     * @return
     */
    List<String> findRedisKeyByMedical(@Param("ids") List<String> ids);

    /**
     * 查询所有字典值id和名称
     * @return
     */
    List<Map<String, String>> getAllDictMap();

    /**
     * 根据basicDataId查询dataValueList
     * @param basicDataId
     * @return
     */
    List<HspBasicValueEntity> getListByBasicDataId(@Param("basicDataId") String basicDataId);

    Map<String,Object> getDeptById(String performedBy);

    List<HspBasicValueEntity> getLeftHspBasicValueEntityOfRight(@Param("leftDictId") String leftDictId, @Param("rightDictId") String rightDictId, @Param("basicDataValueId") String basicDataValueId);

    Map<String,String> selectFromEmrCodeDict(@Param("basicDataValueId") String basicDataValueId);

    /**
     * 查询检查小类
     * @param rightValueId
     * @param leftDictId
     * @param rightDictId
     * @param t2LeftValueId
     * @return
     */
    List<Map<String, String>> getsubClass(@Param("rightValueId") String rightValueId, @Param("leftDictId") String leftDictId, @Param("rightDictId") String rightDictId, @Param("t2LeftValueId") String t2LeftValueId);

    /**
     * 查询物化视图
     * @param basicDataValueId
     * @return
     */
    Map<String, String> selectMavEmrCoreDictByDVId(@Param("basicDataValueId") String basicDataValueId);

    List<Map<String, String>> selectLeftDatasByParams(@Param("leftDictId") String leftDictId, @Param("rightDictId") String rightDictId, @Param("rightValueId") String rightValueId);

    Map<String, String> selectDeptById(@Param("id") String id);

    List<BasicDataNameDTO> dictListByValue(SelectDictParam selectDictParam);
}
